var fecha_desde, fecha_hasta, rowIds = [], opt_grid;
$(function() {
    $("#Factura_fecha_emision").val(fechas);
//    maskAttributes();
    fecha_desde = null;
    fecha_hasta = null;
    opt_grid = $("#facturas-grid");
    opt_grid.bootgrid({
        ajax: true,
        post: function() {
            return {
                action: "mostrarFacturas"
            };
        },
        selection: true,
        multiSelect: true,
        rowSelect: true,
        keepSelection: true,
        url: "procesos/crud_factura.php",
        labels: {
            loading: "Cargando...",
            noResults: "Sin Resultados!",
            infos: "Mostrando {{ctx.start}} - {{ctx.end}} de {{ctx.total}} resultados"
        },
//        css: {
//            pagination: "page-ft",
//            header: "bootgrid-header"
//        },
        templates: {
            header: '',
        }
    });

    //filtro de fechas
    $('#fechas_filter').daterangepicker(
            {
                format: 'DD/MM/YYYY',
                ranges: {
                    'Hoy': [moment(), moment()],
                    'Ayer': [moment().subtract('days', 1), moment().subtract('days', 1)],
                    'Semana Actual': [moment().subtract('week').startOf('week').subtract('days', -1), moment()],
                    'Semana Anterior': [moment().subtract('week', 1).startOf('week').subtract('days', -1), moment().subtract('week', 1).endOf('week').subtract('days', -1)],
                    'Mes Actual': [moment().subtract('month').startOf('month'), moment().subtract('month').endOf('month')],
                    'Mes Anterior': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
                },
                startDate: moment().subtract(29, 'days'),
                locale: {
                    applyLabel: 'Aplicar',
                    cancelLabel: 'Limpiar',
                    fromLabel: 'DESDE',
                    toLabel: 'HASTA',
                    customRangeLabel: 'Rango Personalizado',
                    daysOfWeek: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
                    monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
                    firstDay: 1
                }

            },
    function(start, end, label) {
        $('#fechas_filter').val(start.format('DD/MM/YYYY') + ' - ' + end.format('DD/MM/YYYY'));
        fecha_desde = start.format('YYYY-MM-DD');
        fecha_hasta = end.format('YYYY-MM-DD');
//        opt_grid.bootgrid('reload');
//        opt_grid.data(".rs.jquery.bootgrid").selectedRows = [];
    }
    ).on('cancel.daterangepicker', function(ev, picker) {
        $('#fechas_filter').val(null);
        fecha_desde = null;
        fecha_hasta = null;
//        opt_grid.bootgrid('reload');
//        opt_grid.data(".rs.jquery.bootgrid").selectedRows = [];
    });
    $('#fechas_filter').attr({
        placeholder: 'Seleccione un Rango'
    });
    /**
     * 
     * @param {type} $form_id
     * @returns {undefined}
     * 
     */

    /*funcionn para el drop*/

    $("#Factura_id_cliente").select2({
        placeholder: "Seleccione un Cliente",
        initSelection: function(element, callback) {
            if ($(element).val()) {
                var data = {id: element.val(), text: $(element).attr('selected-text')};
                callback(data);
            }
        },
        ajax: {// instead of writing the function to execute the request we use Select2's convenient helper
            url: "procesos/crud_cliente.php",
            type: "post",
            dataType: 'json',
            data: function(term, page) {
                return {
                    search_value: term, // search term
                    action: "AjaxjaxlistClientes"
                };
            },
            results: function(data, page) { // parse the results into the format expected by Select2.
                // since we are using custom formatting functions we do not need to alter remote JSON data
                return {results: data};
            }
        },
        allowClear: true
//        multiple: true,
    });
    $("#Factura_id_cliente").on('change', function() {

        id_cliente = $("#Factura_id_cliente").val();
        getInfoClientes(id_cliente);

    });

});
/**
 * Inserta en la tabla un usuario
 * @param {type} $form_id
 * @returns {undefined}
 */
//function insertarUsuarios($form_id) {
//    $($form_id).attr('action', "procesos/crud_usuarios.php");
//    console.log($form_id);
//    ajaxValidarFormulario({
//        formId: $form_id,
//        action: "insertar_usuario",
//        beforeCall: function() {
//            BloquearBotonesModal($form_id);
//        },
//        successCall: function(data) {
//            if (data.success) {
//                $("#usuarios-form").trigger('reset');//reinicia todo
//                opt_grid.bootgrid('reload');//actualiza l boot
//                alert("Se agrego");
//            }
//        },
//        errorCall: function(data) {
//            DesBloquearBotonesModal($form_id, 'Crear', 'insertarUsuarios');
//        }
//    });
//}
/**
 * Obtiene los datos de un cliente en funcion a su id
 * mediante Ajax
 * @returns {undefined}
 */
function getInfoClientes(id_cliente) {
    $data = {
        action: "getInfoClientes",
        id_cliente: id_cliente
    };
    $.ajax({
        type: 'POST',
        url: "procesos/crud_cliente.php",
        data: $data,
        dataType: 'json',
        success: function(data) {
            //acciones retorna los datos y d acuerdo a la informacion accedemos
            if (data.success) {
                console.log(data.data);

                $("#cliente_cedula").val(data.data[0].documento);
                $("#cliente_nombre_apellido").val(data.data[0].nombres + " " + data.data[0].apellidos);
                $("#cliente_direccion").val(data.data[0].direccion);
                $("#cliente_telefono").val(data.data[0].telefono);
                $("#cliente_celular").val(data.data[0].celular);

            } else {
                console.log(data.data);
            }
        }
    });
}

function insertarFacturas($form_id) {
    $($form_id).attr('action', "procesos/crud_factura.php");
    console.log($form_id);
    ajaxValidarFormulario({
        formId: $form_id,
        action: "insertar_facturas",
        beforeCall: function() {
            BloquearBotonesModal($form_id);
        },
        successCall: function(data) {
            if (data.success) {
                $("#facturas-form").trigger('reset');//reinicia todo
                opt_grid.bootgrid('reload');//actualiza l boot
                alert("Se agrego");
            }
        },
        errorCall: function(data) {
            DesBloquearBotonesModal($form_id, 'Crear', 'insertarFacturas');
        }
    });
}